home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / docs / ippon / ver / 013 / ippon013.lzh / maketbl.c < prev    next >
C/C++ Source or Header  |  2000-07-07  |  2KB  |  86 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. #define SPEED_MAX    32
  6. double speed[SPEED_MAX] =
  7. {0.50, 0.60, 0.70, 0.80, 0.90,
  8.  1.00, 1.10, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90,
  9.  2.00, 2.10, 2.20, 2.30, 2.40, 2.50, 2.60, 2.70, 2.80, 2.90,
  10.  3.00, 3.10, 3.20,
  11.  4.00, 5.00, 6.00, 7.00};
  12.  
  13.  
  14. typedef struct {
  15.     signed int x, y;
  16. } VECTOR;
  17.  
  18. unsigned char pstable[256][256];
  19. VECTOR xytable[SPEED_MAX][256];
  20.  
  21.  
  22. void usage (void)
  23. {
  24.     printf (
  25.                "IPPON.X 用テーブルを作成する maketbl.x ver0.01\n"
  26.                "        programmed by Mitsuky <FreeSoftware>\n"
  27.                "以下のテーブルを作成します\n"
  28.                "    TBL/PSTABLE.TBL     : 自機サーチテーブル\n"
  29.                "    TBL/XYTABLE.DAT     : sin,cos テーブル\n"
  30.            "角度関係のは全て1周=256段階で、右向きが0、下向きが64となっております\n"
  31.         );
  32. }
  33.  
  34.  
  35.  
  36. int maketable (void)
  37. {
  38.     int i, j;
  39.     FILE *fp;
  40.  
  41.     printf ("データテーブルを作成します。\n");
  42.  
  43.     printf ("少々時間が掛かります。申し訳ありません。\n"
  44.         "( arctan を 256x256 個計算しています。)\n");
  45.     for (i = 0; i < 256; i++) {
  46.         printf ("%3d/256\x1b[0J\n\x0b", i + 1);
  47.         for (j = 0; j < 256; j++) {
  48.             pstable[i][j] = (unsigned char) (atan ((double) j / (double) i) * 256.0 / 2.0 / M_PI);
  49.         }
  50.     }
  51.     fp = fopen ("TBL/PSTABLE.TBL", "wb");
  52.     fwrite (pstable, 256 * 256, sizeof (unsigned char), fp);
  53.     fclose (fp);
  54.  
  55.     for (i = 0; i < SPEED_MAX; i++) {
  56.         for (j = 0; j < 256; j++) {
  57.             xytable[i][j].x = (signed int) (cos (2.0 * M_PI * (long) j / 256.0) * 65536.0 * speed[i]);
  58.             xytable[i][j].y = (signed int) (sin (2.0 * M_PI * (long) j / 256.0) * 65536.0 * speed[i]);
  59.         }
  60.     }
  61.     fp = fopen ("TBL/XYTABLE.DAT", "wb");
  62.     if (fp == NULL) {
  63.         printf ("TBL/XYTABLE.DAT が書き込めません\n");
  64.         exit (-1);
  65.     }
  66.     fwrite (xytable, 256 * SPEED_MAX, sizeof (VECTOR), fp);
  67.     fclose (fp);
  68.  
  69.     printf ("\n終了しました。\n");
  70.  
  71.     return (0);
  72. }
  73.  
  74.  
  75.  
  76. int main (int argc, char *argv[])
  77. {
  78.     if (argc != 1) {
  79.         usage ();
  80.         return (-1);
  81.     }
  82.     maketable ();
  83.  
  84.     return (0);
  85. }
  86.